The inventive concept relates generally to semiconductor memory devices and memory systems. More particularly, the inventive concept relates to memory systems and methods of operating a memory system that are capable of generating a random number using a characteristic of constituent nonvolatile memory cells.
Semiconductor memory devices may be generally classified as volatile or nonvolatile according to their operative nature. Volatile memory devices lose stored data in the absence of applied power, while nonvolatile memory devices are able to retain stored data even when power is no longer applied.
There are different kinds of nonvolatile memory devices, including for example, the mask read-only memory (MROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), and electrically erasable programmable read-only memory (EEPROM). Flash memory is a particular type of EEPROM and has been widely used in a great variety of digital systems, such as computers, cellular phones, PDAs, digital cameras, camcorders, voice recorders, MP3 players, handheld PCs, games, facsimiles, scanners, printers, and the like.
Data security is almost always an important consideration in the design and operation of a memory system. Increasingly sophisticated attacks (e.g., probing, fault injection, power analysis, and the like) seeking to copy or corrupt source code, stored user data, and/or host system data are a constant threat during the operation of digital systems. Accordingly, there is an ongoing need to encrypt the data stored by contemporary memory devices. Incoming data received by a memory system from a host, for example, is encrypted using an encryption key. Thereafter, when the data is read from memory and provided to the host it is decrypted using the same encryption (/decryption) key. An encryption key may be variously defined or generated in accordance with user-provided information (e.g., a password), security code, one or more random number(s), or some combination of these or similar digital value(s). Many contemporary memory systems make use of at least one random number as a computational seed or variable during the generation of an encryption key.
However, the generation and provision of a truly random number is not a trivial matter. Indeed, the generation of a random number in contemporary memory systems is particularly troublesome given the memory system requirements of small size and modest power consumption. In many conventional instances, the random number used to generate an encryption key is generated and provided by a separate random number generating circuit. The term “separate random number generating circuit” is used hereafter to denote circuits and related control software that are uniquely or principally provided to generate a random number. Separate random number generating circuits may be quite large in size and a great variety of such circuits are understood by those skilled in the art.